package cn.agiledata.bank.linkbank.service;

import java.util.Date;

import cn.agiledata.bank.linkbank.exception.LinkBankException;
import cn.agiledata.bank.linkbank.logic.query.BankOrder;
import cn.agiledata.bank.linkbank.logic.query.OrderQueryResponse;

/**
 * 网上银行查询服务
 * 
 * @author maxianbo
 * 
 */
public interface BankQueryService {

    /**
     * 查询单个订单
     * 
     * @param bankCode
     *            银行代码
     * @param orderId
     *            订单号
     * @return 网上银行订单
     */
    public BankOrder queryOrder(String bankCode, String orderId)
            throws LinkBankException;

    /**
     * 根据订单号范围查询订单
     * 
     * @param bankCode
     *            银行代码
     * @param status
     *            订单状态
     * @param beginOrderId
     *            起始订单号
     * @param endOrderId
     *            结束订单号
     * @param maxPerPage
     *            每页最大记录数
     * @param pageNo
     *            页码
     * @return 订单查询结果
     */
    public OrderQueryResponse queryOrdersByOrderIdRange(String bankCode,
            String status, String beginOrderId, String endOrderId,
            int maxPerPage, int pageNo) throws LinkBankException;

    /**
     * 根据订单时间范围查询订单
     * 
     * @param bankCode
     *            银行代码
     * @param status
     *            订单状态
     * @param beginTime
     *            起始时间
     * @param endTime
     *            结束时间
     * @param maxPerPage
     *            每页最大记录数
     * @param pageNo
     *            页码
     * @return 订单查询结果
     */
    public OrderQueryResponse queryOrdersByTimeRange(String bankCode,
            String status, Date beginTime, Date endTime, int maxPerPage,
            int pageNo) throws LinkBankException;

}